home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / tools / tree / InlineNewInstanceExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  3.1 KB  |  84 lines

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import sun.tools.asm.Assembler;
  5. import sun.tools.java.Constants;
  6. import sun.tools.java.Environment;
  7. import sun.tools.java.FieldDefinition;
  8. import sun.tools.java.Type;
  9.  
  10. public class InlineNewInstanceExpression extends Expression {
  11.    FieldDefinition field;
  12.    Statement body;
  13.  
  14.    InlineNewInstanceExpression(int var1, Type var2, FieldDefinition var3, Statement var4) {
  15.       super(151, var1, var2);
  16.       this.field = var3;
  17.       this.body = var4;
  18.    }
  19.  
  20.    public Expression inline(Environment var1, Context var2) {
  21.       return this.inlineValue(var1, var2);
  22.    }
  23.  
  24.    public Expression inlineValue(Environment var1, Context var2) {
  25.       if (this.body != null) {
  26.          LocalField var3 = (LocalField)this.field.getArguments().elementAt(0);
  27.          Context var4 = new Context(var2, this);
  28.          var4.declare(var1, var3);
  29.          this.body = this.body.inline(var1, var4);
  30.       }
  31.  
  32.       if (this.body != null && this.body.op == 149) {
  33.          this.body = null;
  34.       }
  35.  
  36.       return this;
  37.    }
  38.  
  39.    public Expression copyInline(Context var1) {
  40.       InlineNewInstanceExpression var2 = (InlineNewInstanceExpression)((Node)this).clone();
  41.       var2.body = this.body.copyInline(var1, true);
  42.       return var2;
  43.    }
  44.  
  45.    public void code(Environment var1, Context var2, Assembler var3) {
  46.       var3.add(super.where, 187, this.field.getClassDeclaration());
  47.       if (this.body != null) {
  48.          LocalField var4 = (LocalField)this.field.getArguments().elementAt(0);
  49.          CodeContext var5 = new CodeContext(var2, this);
  50.          ((Context)var5).declare(var1, var4);
  51.          var3.add(super.where, 58, new Integer(var4.number));
  52.          this.body.code(var1, var5, var3);
  53.          var3.add(var5.breakLabel);
  54.       }
  55.  
  56.    }
  57.  
  58.    public void codeValue(Environment var1, Context var2, Assembler var3) {
  59.       var3.add(super.where, 187, this.field.getClassDeclaration());
  60.       if (this.body != null) {
  61.          LocalField var4 = (LocalField)this.field.getArguments().elementAt(0);
  62.          CodeContext var5 = new CodeContext(var2, this);
  63.          ((Context)var5).declare(var1, var4);
  64.          var3.add(super.where, 58, new Integer(var4.number));
  65.          this.body.code(var1, var5, var3);
  66.          var3.add(var5.breakLabel);
  67.          var3.add(super.where, 25, new Integer(var4.number));
  68.       }
  69.  
  70.    }
  71.  
  72.    public void print(PrintStream var1) {
  73.       LocalField var2 = (LocalField)this.field.getArguments().elementAt(0);
  74.       var1.println("(" + Constants.opNames[super.op] + "#" + var2.hashCode() + "=" + this.field.hashCode());
  75.       if (this.body != null) {
  76.          this.body.print(var1, 1);
  77.       } else {
  78.          var1.print("<empty>");
  79.       }
  80.  
  81.       var1.print(")");
  82.    }
  83. }
  84.